package com.haiyou.sms.alibaba.service;


import com.aliyuncs.exceptions.ClientException;
import lombok.NonNull;

/**
 * 阿里云短信服务
 */
public interface AliSmsService {
    /**
     * 阿里云发送短消息
     *
     * @param phoneNumber   手机号
     * @param signName      阿里云短信签名
     * @param templateCode  阿里云短信模板code
     * @param templateParam json模板参数字符串
     * @return
     */
    boolean sendSms(@NonNull String phoneNumber, @NonNull String signName,
                    @NonNull String templateCode, @NonNull String templateParam) throws ClientException;

    boolean sendSms(@NonNull String phoneNumber, @NonNull String signName,
                         @NonNull String templateCode, AliSmsCallbackService callback) throws ClientException;

    /**
     * 获取验证码随机数
     *
     * @param digits 几位验证码数
     * @return
     */
    String getRandCode(int digits);

    /**
     * 发送登录短信
     *
     * @param phoneNumber
     * @param callback
     * @return
     */
    boolean sendLoginSms(@NonNull String phoneNumber, AliSmsCallbackService callback) throws ClientException;

    /**
     * 发送注册短信
     *
     * @param phoneNumber
     * @return
     */
    boolean sendRegisterSms(@NonNull String phoneNumber, AliSmsCallbackService callback) throws ClientException;

    /**
     * 发送忘记密码短信
     *
     * @param phoneNumber
     * @return
     */
    boolean sendForgetPswdSms(@NonNull String phoneNumber, AliSmsCallbackService callback) throws ClientException;

    /**
     * 检查注册验证码
     *
     * @param phoneNumber
     * @param validCode
     * @return
     */
    void checkRegisterSms(@NonNull String phoneNumber, @NonNull String validCode);

    /**
     * 检查登录验证码
     *
     * @param phoneNumber
     * @param validCode
     * @return
     */
    void checkLoginSms(@NonNull String phoneNumber, @NonNull String validCode);

    /**
     * 检查忘记验证码
     *
     * @param phoneNumber
     * @param validCode
     * @return
     */
    void checkForgetPswdSms(@NonNull String phoneNumber, @NonNull String validCode);

    /**
     * 检查通用发送验证码
     *
     * @param phoneNumber
     * @param validCode
     * @return
     */
    void checkCommonSms(@NonNull String phoneNumber, @NonNull String validCode);
}
